The arrival of Internet has ushered in an era in which computer security is of great importance. Because computers can now easily communicate, computer users can now unwittingly download and install software applications that, when executed as software processes, maliciously steal or destroy sensitive information or otherwise cause computers to behave in unexpected and undesirable ways. For instance, a software application embedded in an innocuous email attachment may, when clicked on by a user of a computer, launch a software process that sends credit card information stored on the computer to another computer. Accordingly, various computer security techniques have been developed to control the ability of software processes executing on a computer to perform actions with regard to other resources provided by the computer.
In one such technique, each sensitive resource provided by a computer is associated with an access control list. The access control list associated with a resource specifies users who are allowed to perform actions with regard to the resource. For instance, an access control list associated with a file that contains a credit card number may specify that processes associated with a user named “Harry” are allowed to read the file and may specify that processes associated a user named “Tom” are not allowed to read the file.
In another such technique, a computer stores capability lists associated with each user of the computer. The capability list associated with a user lists which sensitive resources the user is allowed to access. For instance, a capability list associated with a user named “Robert” may specify that processes initiated by “Robert” are allowed to communicate on the Internet and that processes initiated by “Robert” are allowed to read a file that contains a credit card number.